Elasticsearch

Geo search

Plusieurs filtres disponibles

geo_bouding_box

permet de rechercher dans un carré.

La recherche s'effectue sur l'index

{
    "query": {
        "filtered": {
            "filter": {
                "geo_bounding_box": {
                    "location": {
                        "bottom_right": {
                            "lat": xxx,
                            "lon": yyy
                        },
                        "top_left": {
                            "lat": xxx,
                            "lon": yyy
                        }
                    }
                }
            },
            "query": {
                "match_all": {}
            }
        }
    }
}

geo_polygon_filter

Recherche tous les points qui sont dans un polygone.

{
    "query": {
        "filtered": {
            "filter": {
                "geo_polygon": {
                    "geo": {
                        "points": [
                            {"lat": xxx, "lon": yyy},
                            {"lat": xxx, "lon": yyy},
                            {"lat": xxx, "lon": yyy}
                        ]
                    }
                }
            },
            "query": {
                "match_all": {}
            }
        }
    }
}

geo_distance filter

Permet de filtrer en fonction d'une distance autour d'un point

{
    "query": {
        "filtered": {
            "filter": {
                "geo_distance": {
                    "geo": {lat:xxx, lon:yyy},
                    "distance":"15km",
                    "optimize_bbox":"memory"
                }
            },
            "query": {
                "match_all": {}
            }
        }
    }
}

On a la possibilité de faire des recherches en :

  • in -> inch
  • yd -> yards
  • m -> miles
  • km -
  • m
  • mm
  • cm